bitkeeper revision 1.1159.69.3 (4138d7a65FvXU3lh0Vx8Nsl4KhPxGw)
authoriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Fri, 3 Sep 2004 20:44:22 +0000 (20:44 +0000)
committeriap10@labyrinth.cl.cam.ac.uk <iap10@labyrinth.cl.cam.ac.uk>
Fri, 3 Sep 2004 20:44:22 +0000 (20:44 +0000)
commitb9ef5137a5bff3017c73a1c575b67ba58f1cfa87
treea1e2e7806c5d5453f72c7d9ddd4612d78f810201
parentc19944ff8d2d47efd9d21d792688c8855a0c829b
bitkeeper revision 1.1159.69.3 (4138d7a65FvXU3lh0Vx8Nsl4KhPxGw)

Fix potential security hole in writeable pagetable implementation:
We wern't ensuring that that L1 pages' VA backpointer is immutable
after the backpointer is initialised  when the page first becomes
linked into a pagetable. The backpointer can only be released after
the type count drops to zero (or 1 if the page is pinned).
In summary: We now ensure that if an L1 page is used in multiple
pagetables it must be at the same virtual address in all of them,
and that L1 pages can only be used once in any given pagetable.
None of these extra rules should be a problem for any OS.
xen/arch/x86/domain.c
xen/arch/x86/memory.c
xen/arch/x86/traps.c
xen/include/asm-x86/mm.h